﻿#ifndef ANIMATION_H
#define ANIMATION_H

#include <QVector>
#include <QPixmap>
#include <QPainter>
#include <QElapsedTimer>
//动画帧图
class Animation
{
public:
    Animation();
    Animation(int speed );
    Animation(QVector<QPixmap>* const pixmap, int speed = 500);
    //添加帧图
    void addFrame( QVector<QPixmap>* const pixmap);
    //修改帧图
    void ModifyFrame(const int index, const QString& filename);
    void ModifyFrame(QVector<QPixmap>* const pixmap);
    //设置画面切换定时时间
    void setDelayTime(const int time);
public:
    //获取帧图
    const QPixmap& getFrame(int index)const;
    const QPixmap& getFrame()const;
    //获取帧图数量
    const qsizetype count()const;
    //获取画面切换定时时间
    const int getDelayTime()const;
public:
    //判断是否一轮显示
    inline bool finished()const { return m_index ==0&& m_Once; };
public:
    //更新数据
    void update();
    //绘图
    void draw(QPainter*painter,const QPoint& getPos ); 
private:
    QVector<QPixmap>* m_pixmaps=nullptr;//动画帧图
    int m_index = 0;//索引
    int m_speed = 500;//延迟切换时间
    inline static QElapsedTimer globalElapsedTimer;
    bool m_Once=false;//一次循环
};

#endif // ANIMATION_H
